package ru.passivemoney.strategy.processors;

import java.util.Set;

import ru.passivemoney.indicator.AIndicator;
import ru.passivemoney.strategy.Prognosis;

import com.dukascopy.api.IBar;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.Period;
/**
 * Интерфейс для реализации классами, которые рассчитывают величину прогноза абстрагируясь от инструмента и периода
 * @author artem
 *
 */
public interface IProcessor {

	/**
	 * Возвращает величину прогноза на момент формирования нового бара, абстрагируясь от инструмента и периода
	 * @param askBar
	 * @param bidBar
	 * @return
	 */
	Prognosis processBar(Instrument instrument, Period period, IBar askBar, IBar bidBar);
	
	/**
	 * Устанавливает индикаторы для проведения технического анализа в рамках метода {@link #processBar(IBar, IBar)}
	 * @param indicators
	 */
	void setIndicators(Set<AIndicator> indicators);
	
	/**
	 * Функция инициализации. Может использоваться, например, для инициализаии индикаторов.
	 */
	void init();
}
